package UI.administrador;

import excepciones.UsuarioNoEsFuncionarioExcepcion;
import excepciones.UsuarioNoExisteExcepcion;
import gestorBD.Controlador;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
import static uiMain.bienRaizOk.ventana;

public class PanelListarOpcionesDeUnUsuario extends JPanel {

    JPanel panelGlobal = new JPanel();
    JLabel labelCedula;
    JTextField campoCedula;
    JButton botonAceptar;

    JLabel labelDescripcion;
    JScrollPane scrollListaOpciones = new JScrollPane();
    JList listaOpciones;
    JButton botonVolver;

    public PanelListarOpcionesDeUnUsuario() {
        super();

        this.panelGlobal.setLayout(new GridBagLayout());

        GridBagConstraints c = new GridBagConstraints();

        labelCedula = new JLabel("Ingrese la cédula del usuario");
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 0;
        c.gridy = 0;
        c.gridwidth = 1;
        c.gridheight = 1;
        this.panelGlobal.add(labelCedula, c);

        campoCedula = new JTextField();
        campoCedula.setColumns(8);
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 1;
        c.gridy = 0;
        c.gridwidth = 1;
        c.gridheight = 1;
        this.panelGlobal.add(campoCedula, c);

        botonAceptar = new JButton("Aceptar");
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 2;
        c.gridy = 0;
        c.gridwidth = 1;
        c.gridheight = 1;
        this.panelGlobal.add(botonAceptar, c);

        labelDescripcion = new JLabel("Este usuario cuenta con las siguientes opciones en su menú:",SwingConstants.CENTER);
        labelDescripcion.setVisible(false);
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 0;
        c.gridy = 1;
        c.gridwidth = 4;
        c.gridheight = 1;
        this.panelGlobal.add(labelDescripcion, c);

        botonVolver = new JButton("Volver");
        c.gridx = 0;
        c.gridy = 4;
        c.gridwidth = 1;
        c.gridheight = 1;
        this.panelGlobal.add(botonVolver);
        
        
        this.add(panelGlobal);
        

        //Se añaden las funcionalidades
        botonAceptar.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                long cedulaIngresada;
                try {
                    cedulaIngresada = Long.parseLong(campoCedula.getText());
                } catch (Exception e) {
                    String textoPopUp = "Ingrese una cédula válida";
                    JOptionPane.showMessageDialog(null, textoPopUp, "Error", JOptionPane.ERROR_MESSAGE);
                    return;
                }

                try {
                    Object[] dev = Controlador.obtenerListaDeOpcionesDeUsuario(cedulaIngresada);
                    listaOpciones = new JList(dev);
                    scrollListaOpciones.setVisible(true);
                } catch (UsuarioNoEsFuncionarioExcepcion e) {
                    String textoPopUp = "Este usuario no es un funcionario";
                    JOptionPane.showMessageDialog(null, textoPopUp, "Error", JOptionPane.ERROR_MESSAGE);
                    scrollListaOpciones.setVisible(false);
                    labelDescripcion.setVisible(false);
                    return;
                } catch (UsuarioNoExisteExcepcion e) {
                    String textoPopUp = "No existe este usuario en el sistema";
                    JOptionPane.showMessageDialog(null, textoPopUp, "Error", JOptionPane.ERROR_MESSAGE);
                    scrollListaOpciones.setVisible(false);
                    labelDescripcion.setVisible(false);
                    return;
                }
                
                panelGlobal.remove(scrollListaOpciones);
                listaOpciones.setVisibleRowCount(5);
                listaOpciones.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
                scrollListaOpciones = new JScrollPane(listaOpciones);
                c.fill = GridBagConstraints.HORIZONTAL;
                c.gridx = 0;
                c.gridy = 2;
                c.gridwidth = 4;
                c.gridheight = 4;
                panelGlobal.add(scrollListaOpciones, c);
                
                labelDescripcion.setVisible(true);
                revalidate();
            }

        });

        botonVolver.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                ventana.mostrarPanelOpcionesDeAdministrador();

            }
        });

    }
}
